#ifndef STATE_HPP
#define STATE_HPP

#include <omp.h>

#include "conversion.h"
#include "bit.h"

#include <iostream>
#include <complex>

typedef std::complex<double> complexd;

using namespace std;

class State {
    int n;
    long long l;
    complexd* vec;
public:
    State(int);
    State(const State &);
    ~State();

    void randomFill();
    void intentionalFill(int, long long, complexd*);

    void doConversion(Conversion &, int);
    void norma();

    State operator=(State);
    bool operator==(State);
    bool operator!=(State);
    int getDimension();
    long long getLong();
    complexd* getVector();
};

ostream& operator<<(ostream &, State &);

#endif // STATE_HPP
